package com.ce.webframework.sec.dao;

import java.util.Date;
import java.util.List;
import com.ce.webframework.sec.model.SecExcludeSchedDO;
import com.ce.webframework.sec.model.SecScheduleDO;

public interface ISecScheduleDao {
	
		/**
		 * 功能描述:增加日程记录
		 *
		 * @param schDO
		 *            SecScheduleDO 实体对象
		 * @return SecScheduleDO
		 */
	
	
		public SecScheduleDO addSecSchedule(SecScheduleDO schDO);
	
		/**
		 * 功能描述:更新日程记录
		 *
		 * @param calDO
		 *            SecScheduleDO 实体对象
		 * @return void
		 *            增加后的对象
		 */
		public SecScheduleDO updateSecSchedule(SecScheduleDO schDO) ;
	
		/**
		 * 功能描述:按主键Id 删除日程记录
		 *
		 * @param scheduleId
		 *            SecScheduleDO 的主键
		 * @return boolean 删除成功是为true，失败时为false
		 */
	
		public boolean deleteSecSchedule(Long scheduleId);
	
	
		/**
		 * 功能描述:根据scheduleId查找SecScheduleDO对象
		 *
		 * @param scheduleId
		 *            SecScheduleDO对象的Id
		 * @return SecScheduleDO  id对应的SecScheduleDO对象
		 */
		public SecScheduleDO getSecScheduleById(Long scheduleId) ;
	
		/**
		 * 功能描述:根据scheduleId查找SecScheduleDO对象
		 *
		 * @param scheduleId
		 *            SecScheduleDO对象的Id
		 * @param remindTime
		 *            remindTime
		 * @return SecScheduleDO  id对应的SecScheduleDO对象
		 */
		public SecScheduleDO getSecScheduleById(Long scheduleId,Date remindTime);
	
	
	
		/**
		 * 功能描述:根据用户Id和日期 查找 SecScheduleDO对象列表
		 *
		 * @param userId
		 *            用户的Id
		 * @param beginDate
		 *            开始时间
		 * @param endDate
		 *            开始时间       
		 * @return List<SecScheduleDO> 对象
		 *
		 * 返回符合条件的查询对象列表
		 */
	
		public List<SecScheduleDO> getSecScheduleList(Long userId, Date beginDate, Date endDate);
	
	
		/**
		 * 功能描述:根据用户传入的该月的第一天的日期和最后一天的日查询满足条件的记录
		 *
		 * @param userId
		 *            用户的Id
		 * @param beginDate
		 *           开始时间(月的第一天)
		 * @param endDate
		 *           结束日期(月的最后一天)
		 * @return List<SecScheduleDO>
		 *
		 * 返回符合条件的查询对象列表
		 */
	
		public List<SecScheduleDO> getMonthHaveStyle(Long userId,Date beginDate,Date endDate);
	
		
		/**
		 * 功能描述:根据用户传入的该月的第一天的日期和最后一天的日查询满足条件日程循环排除表的记录
		 *
		 * @param userId
		 *            用户的Id
		 * @param beginDate
		 *           开始时间(月的第一天)
		 * @param endDate
		 *           结束日期(月的最后一天)
		 * @return List<SecExcludeSchedDO>
		 *
		 * 返回符合条件的查询对象列表
		 */
		public List<SecExcludeSchedDO> getMonthExclueStyle(Long userId,Date beginDate,Date endDate);
			
	
	
		/**
		 * 功能描述:根据 scheduleId 删除 SecExcludeSchedDO 表的记录
		 * @param scheduleId
		 *           SecScheduleDO 的主键
		 * @return  void
	     */
		public void delSecExcludeSchedDO(Long  scheduleId);
	
	
		/**
		 * 功能描述:增加一条 记录到 日历 循环排除表
		 *
		 * @param SecExcludeSchedDO
		 *            SecExcludeSchedDO 实体对象
		 * @return void
		 */
		public void addSecExcludeSchedDO(SecExcludeSchedDO schExcludeDO);
		

}
